package code15.f;

import java.io.File;
import java.net.URISyntaxException;

public class Test01 {

	public static void main(String[] args) {
		/*
		 * 一个File对象指向一个路径
		 * 这个路径可以是一个文件，也可以是一个目录(文件夹)
		 * 这个路径所指向的文件，可以存在的，也可以是不存在的，都不影响File对象的使用
		 * 创建File对象时，只是创建了一个指向某个路径的对象，并不表示在磁盘中创建对应的文件
		 */
		// 1.根据路径创建一个File对象
		// 绝对路径 E:\workspace\wbs22032\src\b.properties
		File f1 = new File("E:\\workspace\\wbs22032\\src\\b.properties");
		File f2 = new File("E:/workspace/wbs22032/src");
		System.out.println(f1);
		System.out.println(f2);
		
		// 如果是相对路径, 则相对的是 当前项目的根目录
		// 相对路径: src/b.properties
		File f3 = new File("src/b.properties");
		System.out.println(f3);
		//System.out.println("equals:"+f3.equals(f1));// 比较的是 path false
		//File f4 = new File("src/b.properties");
		//System.out.println("equals2:"+f3.equals(f4));// true
		
		// 构建当前目录的 File对象
		File f5 = new File(".");
		System.out.println(f5);
		System.out.println("-------------");
		// 2. 根据 parent 路径 和 child路径 共同构建一个相对完整的路径
		// E:\\workspace\\wbs22032\\src\\b.properties
		File f6 = new File("E:\\workspace\\wbs22032\\src", "b.properties");
		System.out.println(f6);
		File f7 = new File("E:\\workspace\\wbs22032", "src\\b.properties");
		System.out.println(f7);
		
		// 3. 根据 parent的File对象 和 child路径 共同构建一个相对完整的路径
		File parent = new File("E:\\workspace\\wbs22032");
		File f8 = new File(parent, "src/b.properties");
		System.out.println(f8);
		
		// 4. 使用 URI 创建File对象
		// URI: Uniform Resource Identifier 统一资源标识符
		// URL: Uniform Resource Locator 统一资源定位符
		try {
			File f9 = new File(
					Test01.class// 当前类的class对象
					.getClassLoader() // 获取当前类的加载器
					.getResource("b.properties")// 根据 类路径下(相对于src目录)的 资源 获取其对于的 URL
					.toURI() // 把 URL 转换为 URI
					);
			System.out.println(f9);// 返回资源在类路径中的绝对路径
		} catch (URISyntaxException e) {
			e.printStackTrace();
		}
	}
	
}
